home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows 95 / Programming Windows 95.iso / code / CHAP12 / TREEVIEW.C < prev    next >
C/C++ Source or Header  |  1995-12-31  |  3KB  |  98 lines

  1. /*----------------------------------------------
  2.    TREEVIEW.C -- Functions to support tree view
  3.                  (c) Paul Yao, 1996
  4.   ----------------------------------------------*/
  5. #include <windows.h>
  6. #include <windowsx.h>
  7. #include <commctrl.h>
  8. #include "treeview.h"
  9. #include "treedata.h"
  10. #include "resource.h"
  11.  
  12. //-------------------------------------------------------------------
  13. BOOL tv_BuildRootFolder (HWND hwndLV)
  14.      {
  15.      int i ;
  16.      TV_INSERTSTRUCT tvis ;
  17.  
  18.      // Initialize list view item structure
  19.      ZeroMemory (&tvis, sizeof(TV_INSERTSTRUCT)) ;
  20.      tvis.hParent = NULL ;
  21.      tvis.hInsertAfter = TVI_LAST ; 
  22.      tvis.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_CHILDREN | 
  23.                       TVIF_IMAGE | TVIF_SELECTEDIMAGE ;
  24.      tvis.item.iImage = 0 ;
  25.      tvis.item.iSelectedImage = 0 ;
  26.      tvis.item.cchTextMax = 256 ; 
  27.  
  28.      for (i = 0 ; i < cRootFolders ; i++)
  29.           {
  30.           tvis.item.pszText = fldRoot[i].pName ; 
  31.           tvis.item.lParam = (LPARAM) &fldRoot[i] ;
  32.           tvis.item.cChildren = 1 ;
  33.           fldRoot[i].hItem = TreeView_InsertItem (hwndLV, &tvis) ;
  34.           }
  35.  
  36.      return TRUE ;
  37.      }
  38.  
  39. //-------------------------------------------------------------------
  40. void tv_ExpandChild (HWND hwndLV, LPARAM lParam)
  41.      {
  42.      int i ;
  43.      LPFOLDER pFolder = (LPFOLDER) lParam ;
  44.      LPITEM   pItem = pFolder->piChild ;
  45.      TV_INSERTSTRUCT tvis ;
  46.  
  47.      // Initialize list view item structure
  48.      ZeroMemory (&tvis, sizeof(TV_INSERTSTRUCT)) ;
  49.      tvis.hParent = pFolder->hItem ;
  50.      tvis.hInsertAfter = TVI_LAST ; 
  51.      tvis.item.mask = TVIF_TEXT | TVIF_PARAM | 
  52.                       TVIF_IMAGE | TVIF_SELECTEDIMAGE ;
  53.      tvis.item.iImage = 1 ;
  54.      tvis.item.iSelectedImage = 1 ;
  55.      tvis.item.cchTextMax = 256 ;
  56.  
  57.      if (pItem->hItem == NULL)
  58.           {
  59.           if (pItem->nType == TYPE_ITEM)        // Add macro items
  60.                {
  61.                for (i = 0 ; pItem[i].hItem != LASTITEM ; i++)
  62.                     {
  63.                     tvis.item.pszText = pItem[i].pName ; 
  64.                     tvis.item.lParam = (LPARAM) &pItem[i] ;
  65.                     pItem[i].hItem = TreeView_InsertItem (hwndLV, &tvis) ;
  66.                     }
  67.                }
  68.           else // (pItem->nType == TYPE_FOLDER) // Add folder items
  69.                {
  70.                LPFOLDER pFldr = (LPFOLDER) pFolder->piChild ;
  71.                tvis.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_CHILDREN |
  72.                                 TVIF_IMAGE | TVIF_SELECTEDIMAGE ;
  73.                tvis.item.iImage = 0 ;
  74.                tvis.item.iSelectedImage = 0 ;
  75.                for (i = 0 ; pFldr[i].hItem != LASTITEM ; i++)
  76.                     {
  77.                     tvis.item.pszText = pFldr[i].pName ; 
  78.                     tvis.item.lParam = (LPARAM) &pFldr[i] ;
  79.                     tvis.item.cChildren = 1 ;
  80.                     pFldr[i].hItem = TreeView_InsertItem (hwndLV, &tvis) ;
  81.                     } /* [for i] */
  82.                } /* [if pItem->nType] */
  83.           } /* [if pItem->hItem] */
  84.      }
  85.  
  86. //-------------------------------------------------------------------
  87. BOOL tv_FetchMacro (LPARAM lParam, HWND hwndCtrl)
  88.      {
  89.      LPITEM pItem = (LPITEM) lParam ;
  90.  
  91.      if (pItem->nType == TYPE_FOLDER)
  92.           return FALSE ;
  93.  
  94.      Edit_SetText (hwndCtrl, pItem->pMacro) ;
  95.      return TRUE ;
  96.      }
  97.  
  98.